A common task in the design of consumer devices is that of decoding keypad inputs from the user. Many consumer devices such as audio playback units have a keypad that permits users to navigate through play-lists and select a variety of functions. These keypads must be interfaced to the microprocessor or digital signal processor that controls the consumer device.
Attaching each button to a digital input is not practical. The processors found in small consumer devices typically have a small number of general purpose input pins. Additionally, such pins are normally shared with other processor functions.
A common known solution to this problem employs a binary weighted resistor ladder network and pushbuttons used as an input to an analog-to-digital converter ADC. In this type circuit each button press produces a unique voltage that is converted to a numeric value and sent to the processor.
FIG. 1 illustrates this prior art circuit. Pushbuttons 101 through 108 apply a ground connection to selected nodes in a binary weighted ladder network including weighted resistors 111 through 118 and resistor divider network 119 and 120. For each button pressed generates a binary weighted voltage at node 121. Analog-to-digital converter (ADC) 110 converts the voltage at node 122 to a digital numerical equivalent. Microprocessor 100 decodes the identity of the key depressed.
This approach has numerous disadvantages. Among these are:
1. Needing an analog-to-digital converter;
2. Sensitivity to power line noise; and
3. Decreasing voltage margins as the number of keys increases.